# -*- coding: utf-8 -*-
# @Time    : 2025/4/7 15:38
# @Author  : cx
# @File    : shuJuBaoCun.py
# @Software: PyCharm
# 数据的各种保存方式

import json
import os


class JSON_CZ:
    __xiaoShuoMuLu = ""
    def __init__(self):
        self.__xiaoShuoMuLu = "xs"

    def tian_jia_xiao_shuo(self, xiaoShuoMing,last_chapter_url):
        """
        记录爬取的小说内容text保存地址,和最新章节的网址 last_chapter_url
        :param xiaoShuoMing: 小说名
        :param last_chapter_url: 爬取的最后章节网址
        :return:True 成功
        """
        ml = "sx"
        try:
            # 1. 定义小说数据
            novel_data = {
                "title": xiaoShuoMing,  # 小说名
                "content_path": self.__xiaoShuoMuLu + "\\" + f"{xiaoShuoMing}.text",  # 正文文件路径
                # 单独记录最新章节URL（用于后续更新检查）
                "last_chapter_url": last_chapter_url,  # 最后爬取章节网址
            }
            # 2. 确保目录存在
            os.makedirs(ml, exist_ok=True)

            # 3. 保存为JSON文件
            # 用 os.path.join() 自动适配不同操作系统的路径分隔符（/ 或 \）。
            output_path = os.path.join(ml, f"{xiaoShuoMing}.json")
            with open(output_path, "w", encoding="utf-8") as f:
                json.dump(novel_data, f, ensure_ascii=False)

            print(f"小说元数据已保存至：{output_path}")

            # 4. 返回成功状态和文件路径
            return True, f"元数据已保存至：{output_path}"

        except Exception as e:
            print(f"保存失败：{str(e)}")
            # 捕获所有可能的异常（如权限不足、磁盘满等）
            return False, f"保存失败：{str(e)}"


    def xiu_gai(self,xiaoShuoMing,last_chapter_url):
        """
        更新了小说内容后,修改最新章节的网址 last_chapter_url
        :param xiaoShuoMing:
        :param last_chapter_url:
        :return:
        """
        ml = "sx"
        try:
            # 用 os.path.join() 自动适配不同操作系统的路径分隔符（/ 或 \）。
            output_path = os.path.join(ml, f"{xiaoShuoMing}.json")  # JSON文件路径
            # 读取现有数据
            with open(output_path, "r", encoding="utf-8") as f:
                novel_data = json.load(f)

            # # 添加新章节 append
            # novel_data["chapters"].append(
            #     {
            #         "chapter_name": "第三章 新章节",
            #         "chapter_url": "cc",
            #         "content_path": os.path.join("sx", "魔石", "3.text"),
            #     }
            # )
            novel_data["last_chapter_url"] = last_chapter_url  # 更新最新章节URL

            # 重新保存
            with open(output_path, "w", encoding="utf-8") as f:
                json.dump(novel_data, f, ensure_ascii=False)
            # 4. 返回成功状态和文件路径
            print(f"小说元数据修改成功：{output_path}")
            return True, f"小说元数据修改成功：{output_path}"

        except Exception as e:
            print(f"保存失败：{str(e)}")
            # 捕获所有可能的异常（如权限不足、磁盘满等）
            return False, f"保存失败：{str(e)}"











    def cs(self):
        # 1. 定义小说数据
        novel_data = {
            "title": "魔石01",  # 小说名
            "chapters": [
                {
                    "chapter_name": "第一章 昂",  # 章节名
                    "chapter_url": "aa",  # 章节网址
                    "content_path": os.path.join(
                        "sx", "魔石", "1.text"
                    ),  # 正文文件路径
                },
                {
                    "chapter_name": "第二章 快发快发1",
                    "chapter_url": "bb",
                    "content_path": os.path.join("sx", "魔石", "2.text"),
                },
            ],
            # 单独记录最新章节URL（用于后续更新检查）
            "last_chapter_url": "bb",  # 最后爬取章节网址
        }

        # 2. 保存为JSON文件
        # 用 os.path.join() 自动适配不同操作系统的路径分隔符（/ 或 \）。
        output_path = os.path.join("sx", "魔石.json")  # JSON文件路径
        # os.makedirs(..., exist_ok=True) 确保目录不存在时自动创建
        os.makedirs(os.path.dirname(output_path), exist_ok=True)  # 确保目录存在

        with open(output_path, "w", encoding="utf-8") as f:
            # ensure_ascii=False 保证中文正常显示。
            json.dump(novel_data, f, ensure_ascii=False)  # 美化输出

        print(f"小说元数据已保存至：{output_path}")




if __name__ == "__main__":
    dd = JSON_CZ()
    #dd.cs()
    dd.xiu_gai("牛逼","gfffggggg")











"""
/data/
├── metadata.json       # 所有小说的元数据（书名、作者等）
└── novels/
    ├── 三体/
    │   ├── info.json   # 本书的详细元数据（如章节列表）
    │   └── chapters/
    │       ├── 1.txt   # 第一章正文
    │       └── 2.txt
    └── 活着/
        ├── info.json
        └── chapters/
            ├── 1.txt
            └── 2.txt
"""
